/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.delta.controller;

import br.com.delta.dao.CompraDAO;
import br.com.delta.modelo.Compra;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author watilan
 */
@ManagedBean
@SessionScoped
public class CompraController {

    
    private Compra objCompra;
    private DataModel model;
    
    public CompraController() {
        this.objCompra = new Compra();
                
    }
    public Compra getObjCompra() {
     return objCompra;
    }
        
    public void setObjCompra(Compra objCompra) {
        this.objCompra = objCompra;
    }

    public String novoCompra() {
        this.objCompra = new Compra();
        return "formCompra";
    
    }
    public DataModel getTodos() throws Exception {
        CompraDAO dao = new CompraDAO();
        model = new ListDataModel(dao.todosCompra());
        return model;
    }
    
    public Compra getCompraFromEditOrDelete() {
        objCompra = (Compra) model.getRowData();
        return objCompra;
    }

    public String editar() {
        objCompra = getCompraFromEditOrDelete();
        return "/formCompra";
    }

    
    public String excluir()throws Exception {
        CompraDAO dao = new CompraDAO();
        objCompra = getCompraFromEditOrDelete();
        dao.excluir(objCompra);
        return "/mostrarCompra";

    }
    public String salvar() throws Exception {
        String res = "0";
        boolean cond = true;
        if (cond == true)
            res = "1";
        else
            
            res = "2";
        res = (cond == true ? "1" : "2");
        if(validar()){
            CompraDAO dao = new CompraDAO();
            if(objCompra.getId()==0)
                dao.salvar(objCompra);
            else
                dao.atualizar(objCompra);
            return "/mostrarCompra";
        } else {
            return "index";
        }
    }
   
   public boolean validar(){
        boolean validar = true;
        
        // não pode ter valor nulo
        if(getObjCompra().getNome_cliente().trim().isEmpty()||getObjCompra().getTipo_cliente().trim().isEmpty()){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Informe o nome do cliente!!!"));
            validar = false;
        }
        // não pode ter valor nulo
//        if(getObjCompra().getTipo_cliente().trim().isEmpty()){
//            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Informe o tipo do cliente!!!"));
//            validar = false;
//        }
        // filtrando para que o resultado nao seja igual a ZERO
        // tem que bloquear valores negativos, se for igual o menor..isso
        if(getObjCompra().getValor_unitario() <= 0){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Informe o valor unitario do produto que deverá ser diferente de 0 (zero)!!!"));
            validar = false;
        }
        if(getObjCompra().getQuantidade() <= 0){
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Informe a quantidade do produto que deverá ser diferente de 0 (zero)!!!"));
            validar = false;
        }        
       if(getObjCompra().getTipo_cliente().equals("2")){
            
           getObjCompra().setValor_total(getObjCompra().getQuantidade() * getObjCompra().getValor_unitario());
            double valorTemp = (getObjCompra().getValor_total())/2;
           
            getObjCompra().setValor_desconto((getObjCompra().getValor_total()) - valorTemp);
            
            getObjCompra().setValor_total(valorTemp);
        } else {
            getObjCompra().setValor_total(getObjCompra().getQuantidade() * getObjCompra().getValor_unitario());
        }
        return validar;
    }



}